package com.r2coding.article.api;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageInfo;
import com.r2coding.article.entity.ArticleEntity;
import com.r2coding.article.entity.CategoryEntity;
import com.r2coding.article.service.CategoryService;
import com.r2coding.article.vo.req.CategoryReqVo;
import com.r2coding.article.vo.req.GetArticlesByIdReqVo;
import com.r2coding.article.vo.resp.*;
import com.r2coding.common.util.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.web.bind.annotation.*;

import java.sql.ResultSet;
import java.util.List;

/**
 * @author:98k灬
 * @since:2022/04/23 23:15
 **/
@RestController
@RequestMapping("/api/category")
public class ApiCategoryController {
    @Autowired
    private CategoryService categoryService;
    /**
     * 列表
     */
    @GetMapping("/list")
    public Result list() {
        List<CategoryEntity> list = categoryService.categoryList();
        return Result.ok(list);
    }

    /**
     * 统计每个分类下文章数(管理)
     *
     * @return 统一响应体
     */
    @GetMapping("/categoryCount")
    public Result categoryCount() {
        List<CategoryCountResp> list = categoryService.categoryCount();
        return Result.ok(list);
    }

    /**
     * 统计每个分类下文章数(门户)
     *
     * @return 统一响应体
     */
    @GetMapping("/getCategoryCount")
    public Result getCategoryCount() {
        List<CategoryCount> list = categoryService.getCategoryCount();
        return Result.ok(list);
    }

    /**
     * 根据分类id查询该分类下文章列表
     *
     * @param reqVo 查询条件
     * @return 统一响应体
     */
    @PostMapping("/getArticlesById")
    public Result getArticlesById(@RequestBody GetArticlesByIdReqVo reqVo) {
        PageInfo<ArticleEntity> info = categoryService.getArticlesById(reqVo);
        return Result.ok(info);
    }

    /**
     * 获取近一年的文章贡献度
     *
     * @return 统一响应体
     */
    @GetMapping("/getContributeDate")
    public Result getContributeDate() {
        ContributeDateRespVo vo = categoryService.getContributeDate();
        return Result.ok(vo);
    }

    /**
     * 根据分类id查询该分类下的文章信息列表
     *
     * @param req 请求
     * @return 统一响应体
     */
    @PostMapping("/getByCategoryId")
    public Result getByCategoryId(@RequestBody CategoryReqVo req) {
        ArticleRespVo info = categoryService.getByCategoryId(req);
        return Result.ok(info);
    }
}
